﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.Serialization;

namespace Bomberman
{
    [Serializable]
    public class Jugador: Personaje
    {
		private int porcentajeReduccionTiempo = 0;

		private LanzaBombas lanzaBombas;

		public Jugador(int vida, int velocidad, string nombre = "Bombita") : base(vida, velocidad, nombre)
		{
			lanzaBombas = new LanzaBombas(LanzaBombas.Molotov);
		}
		
		public LanzaBombas LanzaBombas
		{
			get { return lanzaBombas;}
		}

		public int PorcentajeReduccionTiempo
		{
			get { return porcentajeReduccionTiempo; }
			set { porcentajeReduccionTiempo = value; }
		}
		
		public Bomba DejarBomba()
		{
			if (PuedeDisparar() == false) return null;

			Bomba nuevaBomba = lanzaBombas.ObtenerBomba();
			nuevaBomba.Posicionar(this.Posicion());

			return nuevaBomba;
		}
        
		public void Mover(Casillero unCasillero)
		{
			if (SePuedeMover() == false) return;

			if (unCasillero.EsTransitable())
			{
				(this.Posicion()).QuitarContenido(this);
				this.Posicionar(unCasillero);
			}
		}

		public override void Posicionar(Casillero unCasillero)
 		{
			base.Posicionar(unCasillero);
			
			foreach (Interactuable articulo in unCasillero.Articulos){
				articulo.Interactuar(this);
				unCasillero.Articulos.Quitar(articulo);
			}
		}


		internal void AfectarRetardoBombas()
		{
			lanzaBombas.ReducirTiempoBombas();
		}
    }
}
